<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
               "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
lang="en" xml:lang="en">
<head>
<title>ChatRoom</title>
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
<meta name="generator" content="Org-mode"/>
<meta name="generated" content="2009-02-10 21:59:19 SGT"/>
<meta name="author" content="hxg"/>
<style type="text/css">
  html { font-family: Times, serif; font-size: 12pt; }
  .title  { text-align: center; }
  .todo   { color: red; }
  .done   { color: green; }
  .tag    { background-color:lightblue; font-weight:normal }
  .target { }
  .timestamp { color: grey }
  .timestamp-kwd { color: CadetBlue }
  p.verse { margin-left: 3% }
  pre {
	border: 1pt solid #AEBDCC;
	background-color: #F3F5F7;
	padding: 5pt;
	font-family: courier, monospace;
        font-size: 90%;
        overflow:auto;
  }
  table { border-collapse: collapse; }
  td, th { vertical-align: top; }
  dt { font-weight: bold; }

  .org-info-js_info-navigation { border-style:none; }
  #org-info-js_console-label { font-size:10px; font-weight:bold;
                               white-space:nowrap; }
  .org-info-js_search-highlight {background-color:#ffff00; color:#000000;
                                 font-weight:bold; }

</style>
</head><body>
<h1 class="title">ChatRoom</h1>


<div id="table-of-contents">
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#sec-1">1 Overview</a></li>
<li><a href="#sec-2">2 Features</a></li>
<li><a href="#sec-3">3 Reference</a>
<ul>
<li><a href="#sec-3.1">3.1 Libraries</a></li>
</ul>
</li>
</ul>
</div>
</div>

<div id="outline-container-1" class="outline-2">
<h2 id="sec-1">1 Overview</h2>
<div id="text-1">

<p>The program is implemented in Python programming language with
Server-Client architecture. The default communication is group
communication, which means the messages sent by every client is
multicasted to every other clients. If one client want to chat with
another client, it just needs to specify the client name in the
message. 
</p></div>

</div>

<div id="outline-container-2" class="outline-2">
<h2 id="sec-2">2 Features</h2>
<div id="text-2">

<ol>
<li>
Server-Client Architecture;
</li>
<li>
TCP Protocol
</li>
<li>
Multi-Threaded server, each thread is responsible for a client
connection;
</li>
<li>
Multi-Threaded client, one for send message, another one for
listening to server messages;
</li>
<li>
Mutex is used on server to exclusively operate on client
sockets;
</li>
<li>
Special commands: 
"l" - list online users;
"username&gt;&gt;&gt;'message'" - send message to specific client;
</li>
<li>
When one client connects to/disconnect from the server, all other clients are
notified;
</li>
<li>
GUI enabled;
</li>
<li>
cross-platform.
</li>
</ol>
</div>

</div>

<div id="outline-container-3" class="outline-2">
<h2 id="sec-3">3 Reference</h2>
<div id="text-3">


</div>

<div id="outline-container-3.1" class="outline-3">
<h3 id="sec-3.1">3.1 Libraries</h3>
<div id="text-3.1">

<ol>
<li>
wxpython - GUI
</li>
<li>
<a href="http://docs.python.org/library/socket.html">python socket module</a>
</li>
<li>
python thread module
</li>
</ol>
</div>
</div>
</div>
<div id="postamble"><p class="author"> Author: hxg
<a href="mailto:hxg@hxg-laptop">&lt;hxg@hxg-laptop&gt;</a>
</p>
<p class="date"> Date: 2009-02-10 21:59:19 SGT</p>
<p>HTML generated by org-mode 6.09a in emacs 23</p>
</div></body>
</html>
